【实用篇】Nginx的配置文件以及案例详细配置实现 | 您所在的位置:网站首页 › Nginx 配置详解 | 菜鸟教程 › 【实用篇】Nginx的配置文件以及案例详细配置实现 |
【实用篇】Nginx的配置文件以及案例配置实现
一、nginx 的配置文件二、配置实例-反向代理反向代理实例 1反向代理实例 2补充:关于 location 指令的说明
三、配置实例-负载均衡补充:nginx 分配服务器策略1、轮询(默认)2、weight 权重3、ip_hash4、fair(第三方)
四、配置实例-动静分离五、配置 Nginx 高可用
一、nginx 的配置文件
nginx 的配置文件 nginx.conf 文件可以分为以下三部分: 全局快 从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配 置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数, 进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。![]() event 块 event 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对 work process 下的网络进行序列化,是否允许同时接收多个网络,选取哪种驱动模型来处理连接请求,每个 work process 可以同时支持的最大连接数等。![]() http块 这一部分是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。 http块又分为 http全局块 和 server 块。 http全局块 http全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。 server块这块和虚拟主机有密切联系,虚拟主机从用户角度看,和一台独立的硬件主机是一样。而 http块可以有多个 server块,每一个 server块就相当于一个虚拟主机。每一个 server块 又可以分为 全局server块 以及多个 location块。 全局 server 块 最常见的配置就是本虚拟机主机的监听配置和本虚拟机的名称或 IP 配置。 location 块 这块的主要作用就是基于 Nginx 服务器接收到的请求字符串(例如:server_name/uri-string),对虚拟机主机名称(也可以是IP别名)之外的字符串(如前面的:/uri-string)进行匹配。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里执行。 1、实现效果:使用 nginx 反向代理,访问 www.123.com 直接跳转到 127.0.0.1:8080(linux虚拟机中的 tommcat 主页) 2、配置实例准备:安装 JDK 1.8、Tommcat (1)JDK 的安装可以参考JDK 1.8 的安装方法 (2)安装 Tommcat 下载 Tommcat 的压缩包 下载地址Tommcat 压缩包下载地址参考 通过 Xftp 将该压缩包上传到 linux 系统下的 /usr/src/ 目录 在 /usr/src/ 目录下将压缩包解压 cd /usr/src tar -vxf apache-tomcat-7.0.70.tar.gz启动 Tommcat # 切换到 Tommcat 目录下的 bin 目录 cd apache-tomcat-7.0.70/bin # 执行启动命令 ./startup.sh开放8080端口(如果已经开放则不需要再次开放) # 打开配置文件 vim /etc/sysconfig/iptables # 在配置文件中添加一下内容 -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT # 按 esc 退出编辑模式,输入以下命令保存即可 :wq # 重启防火墙服务 service iptables restart通过访问 ip + 8080端口号验证 tommcat 是否已经成功启动,看到如下页面即 tommcat 成功启动。 实现原理 (3)反向代理实例的配置 在本机 host 文件中配置 ip 地址所对应的域名 host 文件在 C:\Windows\System32\drivers\etc 目录下 使用编辑工具打开该 host 文件,并在该文件中加入以下内容 修改 nginx 的配置文件。( /usr/lcoal/nginx/conf/ 目录下的 nginx.conf 文件) 修改完后,按 ESC 退出编辑模式,再输入 :wq 保存退出。 在本地浏览器中地址栏输入 www.123.com 测试 nginx 反向代理是否成功,如果成功访问到 tomcat 的主页,说明配置成功。 1、实现效果:使用nginx 反向代理, 根据访问的路径跳转到不同端口的服务中 nginx 监听端口为 9001。 访问 http://192.168.134.105:9001/edu/ 直接跳转到 127.0.0.1:8080 访问 http://192.168.134.105:9001/vod/ 直接跳转到 127.0.0.1:8081 2、配置实例准备: (1)准备两个 tomcat,一个端口 8080 端口,一个 8081 端口,配置各自的页面以及端口号。 创建 tomcat8080 和 tomcat8081 文件夹 # 切换到 /usr/src/ 目录下 cd /usr/src # 创建两个空文件夹 mkdir tomcat8080 mkdir tomcat8081和配置反向代理实例 1 一样,将 tomcat 的压缩包分别上传到新创建的文件夹 tomcat8081 和 tomcat8082,并解压 # 将 tomcat8080 中的压缩包解压 cd tomcat8080/ tar -xvf apache-tomcat-7.0.70.tar.gz # 将 tomcat8081 中的压缩包解压 cd tomcat8081/ tar -xvf apache-tomcat-7.0.70.tar.gz修改 tomcat8081 中的配置文件的端口 cd /usr/src/tomcat8081/apache-tomcat-7.0.70/conf vim server.xml两个 tomcat 都配置各自的页面,以便区分 开放 8080 端口和 8081 端口启动 两个 tomcat (开放端口,可参考反向代理配置实例 1或者以下开放 9001 端口),测试。 (2)修改 nginx 的配置文件 在http 块中添加 server 块 加入如下内容 server { listen 9001; server_name 192.168.134.105; location ~/edu/ { proxy_pass http://127.0.0.1:8080; } location ~/vod/ { proxy_pass http://127.0.0.1:8081; } }开放 9001 端口 # 打开配置文件 vim /etc/sysconfig/iptables # 在配置文件中添加一下内容 -A INPUT -m state --state NEW -m tcp -p tcp --dport 9001 -j ACCEPT # 按 esc 退出编辑模式,输入以下命令保存即可 :wq # 重启防火墙服务 service iptables restart测试 nginx 反向代理是否成功 注意!!!:在测试之前,需要切换到 /usr/local/nginx/sbin 目录下,通过指令 ./nginx -s reload 重启 nginx 服务。 在浏览器地址栏中,分别输入: http://192.168.134.105:9001/edu/a.html http://192.168.134.105:9001/vod/a.html 该指令用于匹配 URL 地址。语法如下: location [ = | ~ | ~* | ^~ ] uri { }1、= :用于不含正则表达式的 uri 前, 要求请求字符串与 uri 严格匹配,如果匹配 成功, 就停止继续向下搜索并立即处理该请求。 2、~: 用于表示 uri 包含正则表达式,并且区分大小写。 3、~*:用于表示 uri 包含正则表达式, 并且不区分大小写。 4、^~:用于不含正则表达式的 uri 前, 要求 Nginx 服务器找到标识 uri 和请求字 符串匹配度最高的 location 后,立即使用此 location 处理请求, 而不再使用 location 块中的正则 uri 和请求字符串做匹配。 注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~*标识。 三、配置实例-负载均衡1、实现的效果:在浏览器地址栏中输入 http://192.168.134.105/edu/a.html,体现负载均衡效果,将请求平均分配到 8080 和 8081 端口中。 2、配置前准备: (1)准备两个 tomcat 服务器,一台 8080 端口,一台 8081 端口,可参考反向代理实例2。 (2)在两台 tomcat 服务器的 webapps 目录中,创建名称为 edu 的文件夹,在 edu 文件夹中创建页面 a.html 用于测试。(可以类比反向代理实例2) 3、配置 nginx 实现负载均衡 在 http 块中编辑 server 块并添加 upstream 部分,具体代码如下: upstream myserver{ server 192.168.134.105:8080; server 192.168.134.105:8081; } server { listen 80; server_name 192.168.134.105; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; proxy_pass http://myserver; } }
4、重启 nginx 服务,测试负载均衡效果。 cd /usr/local/nginx/sbin/ ./nginx -s reload地址栏输入: http://192.168.134.105/edu/a.html 刷新页面 每个请求按时间顺序逐一分配到不同的后端服务器,如果服务器 down 掉,就会自动剔除该服务器。(这个是 nginx 默认的服务器分配策略,不用做额外的配置) 2、weight 权重weight 代表权重,默认值是 1,权重越高被分配的客户端请求越多。 作用:指定轮询的几率,weight 和访问比率成正比,用于服务端性能不均的情况。 具体配置如下示例: upstream myserver{ server 192.168.134.105:8080 weight=8; server 192.168.134.105:8081 weight=10; } 3、ip_hash每个请求按访问 ip 的 hash 结果分配,这样每个客户端访问固定的一个后端服务器。 通俗的来说,就是每个请求第一次访问哪个服务器,后面同样 ip 地址的请求还是访问同一个服务器。比如说 http://192.168.134.105/edu/a.html 请求访问的服务器是 8080 端口的 tomcat 服务器,那么 ip 地址同样为 http://192.168.134.105 的其他请求还是访问 8080端口的 tomcat 服务器。 同时,该策略可以解决 Session 共享问题。 具体配置如下: upstream myserver{ ip_hash; server 192.168.134.105:8080; server 192.168.134.105:8081; } 4、fair(第三方)按服务器的响应时间来分配请求,响应时间短的优先分配。 具体配置如下: upstream myserver{ server 192.168.134.105:8080; server 192.168.134.105:8081; fair; } 四、配置实例-动静分离1、什么是动静分离(详解) Nginx 动静分离简单来说就是把动态跟静态请求分开, 不能理解成只是单纯的把动态页面和 静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开, 可以理解成使用 Nginx 处理静态页面,Tomcat 处理动态页面。 动静分离从目前实现角度来讲大致分为两种: 一种是纯粹把静态文件独立成单独的域名, 放在独立的服务器上, 也是目前主流推崇的方案; 另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。 通过 location 指定不同的后缀名实现不同的请求转发。 通过 expires 参数设置, 可以使 浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资 源设定一个过期时间, 也就是说无需去服务端验证, 直接通过浏览器自身确认是否过期即可, 所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件, 不建议使用 Expires 来缓存), 我这里设置 3d, 表示在这 3 天之内访问这个 URL, 发送 一个请求, 比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码 304, 如果有修改, 则直接从服务器重新下载, 返回状态码 200。 2、配置前的准备:准备好静态资源 在根目录下新建一个 source 文件夹,并在 source 文件夹下创建 image 文件夹(用来存放图片)和 www 文件夹(用来存放 html 页面)。
在浏览器输入地址 http://192.168.134.105/image/ 可以看到目录下文件的展示。 在浏览器地址栏中输入 http://192.168.134.105/www/a.html,见以下内容则说明配置成功。 1、什么是高可用 通俗的来说,就是保证当一个 Nginx 服务器宕机时,有另外一个 Nginx 服务器代替它,来保证能完成相关的功能。 2、需要实现的效果: 如上图:要实现 Nginx 高可用需要配置一个主机和一个或多个从机(备用机),各自有各自的 ip 地址,Nginx 服务集群以相同的 ip 地址对外暴露。当主机 nginx 1宕机时,从机 nginx 2 可以代替主机,实现反向代理、负载均衡等效果。 3、配置高可用的准备工作: (1)需要两台服务器(linux 虚拟机,我的是 192.168.134.105 和 192.168.134.128) (2)在两个虚拟机上安装 nginx,可参考 如何在Linux虚拟机中安装 Nginx (3)在两个虚拟机上安装 keepalived 软件,执行 如下yum 命令即可: yum install keepalived -y4 、具体配置高可用(主从配置) (1)配置 keepalived 安装完之后,在 /etc/ 目录下会生成目录 keepalived,有文件 keepalived.conf,编辑此文件。 下面以主机 nginx 为例来配置(备机可参考修改):global_defs { notification_email { [email protected] [email protected] [email protected] } notification_email_from [email protected] smtp_server 192.168.134.105 # nginx 服务器的 ip 地址 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_script chk_http_port { script "/usr/local/src/nginx_check.sh" interval 2 #(检测脚本执行的间隔) weight 2 } vrrp_instance VI_1 { state MASTER # 备份服务器上将 MASTER 改为 BACKUP interface eth0 # 网卡 virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小 advert_int 1 authentication { auth_type PASS auth_pass 8888 } virtual_ipaddress { 192.168.134.10 # VRRP H 虚拟地址 } }![]() ![]() ![]() 5、测试 nginx 高可用 (1)在浏览器输入前面所配置的 虚拟 ip 地址 http://192.168.134.10测试是否可以访问,如果可以访问说明主服务器是可以通过虚拟 ip 进行访问的。 (2)手动将 nginx 主服务器停掉模拟主服务器宕机,再次刷新页面,测试 nginx 集群的高可用(即所有请求是否会转发到备份服务器中)。 # 切换到 nginx 的 sbin 目录 /usr/local/nginx/sbin # 关闭 nginx 服务 ./nginx -s stop
|
CopyRight 2018-2019 实验室设备网 版权所有 |